django で自分で作ったファイルをダウンロードさせる 您所在的位置:网站首页 静的ファイル 画像、JavaScript、CSS など を管理する django で自分で作ったファイルをダウンロードさせる

django で自分で作ったファイルをダウンロードさせる

2023-09-17 14:19| 来源: 网络整理| 查看: 265

どういうときの話?

例えばユーザーの入力によって動的にファイルを作り、そのファイルをModelのデータベースに保存1させつつ、ユーザーにダウンロードさせたいとき

下準備 # @settings.py MEDIA_ROOT = os.path.join(BASE_DIR, 'media/') MEDIA_URL = '/media/'

参考

設定 | Django documentation | Django

Djangoで、ファイルダウンロード | NARITO BLOG

スラッシュの過不足があったりするとエラーが出るので注意。

# @urls.py from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # ... the rest of your URLconf goes here ... ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

これはユーザーだけじゃなくて、自分でアップロードする場合にも必要。これは開発時の設定なので注意

参考

静的ファイル (画像、JavaScript、CSS など) を管理する | Django documentation | Django

# @models.py from django.db import models class FileModel(models.Model): file = models.FileField(upload_to='files/')

足りない所は想像力で補ってください。

ファイルをModelに保存する from django.core.files.base import ContentFile from .models import FileModel string = 'this is sample file content' myfile = FileModel() content = ContentFile(string) myfile.file.save('file_name', content)

参考

モデルフィールドリファレンス | Django documentation | Django

こうするとDBに登録されるのでフィルターとかソートとかして取り出せる(はず)。

同名のファイル名で上書きすると、suffixが付いたファイルが新たに作成されて、そちらがDBの指すファイルの実体となる。もとのファイルが削除されるわけではない。

html側は、

{{ uploadfile }}

のようにdwonload属性を使うのが手軽でいいと思う。

参考 

Djangoで、ファイルダウンロード | NARITO BLOG

この言い方は正しくないが↩



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有